中文 | English
这是我在连续 10 个月每日使用后的完整配置:skills、hooks、subagents、MCPs、plugins,以及那些真正有效的东西。
自从 2 月实验性上线以来,我一直是 Claude Code 的重度用户,并且和 @DRodriguezFX 一起,完全使用 Claude Code,凭借 Zenith 赢得了 Anthropic x Forum Ventures 黑客松。
2025 年 9 月 16 日
在纽约举行的 @AnthropicAI x @forumventures 黑客松上拿下了冠军,感谢主办方,这次活动非常棒(还有价值 1.5 万美元的 Anthropic Credits)我和 @DRodriguezFX 构建了 PMFProbe,帮助创始人从 0 -> 1,在 pre MVP 阶段验证你的想法,更多内容很快会公布
Skills 和 Commands
Skills 的作用类似规则,但被限制在特定作用域和工作流内。当你需要执行某个特定工作流时,它们就是 prompt 的快捷方式。
在用 Opus 4.5 进行了长时间编码会话之后,你想清理死代码和零散的 .md 文件?
运行 /refactor-clean。需要测试?用 /tdd、/e2e、/test-coverage。Skills 和 commands 可以在同一个 prompt 中串联使用
把 commands 串联在一起
我可以做一个在检查点更新 codemap 的 skill,这样 Claude 就能快速导航你的代码库,而不用在探索上消耗上下文。
~/.claude/skills/codemap-updater.md
Commands 是通过斜杠命令执行的 skills。二者有重叠,但存储位置不同:
- Skills: ~/.claude/skills - 更宽泛的工作流定义
- Commands: ~/.claude/commands - 快速可执行 prompts
# 示例 skill 结构
~/.claude/skills/
pmx-guidelines.md # 项目特定模式
coding-standards.md # 语言最佳实践
tdd-workflow/ # 带 README.md 的多文件 skill
security-review/ # 基于检查清单的 skillHooks
Hooks 是基于触发器的自动化,会在特定事件上触发。与 skills 不同,它们被限制在 tool calls 和生命周期事件上。
Hook 类型
- PreToolUse - 工具执行前(校验、提醒)
- PostToolUse - 工具完成后(格式化、反馈循环)
- UserPromptSubmit - 当你发送消息时
- Stop - 当 Claude 完成响应时
- PreCompact - 上下文压缩前
- Notification - 权限请求
示例:在长时间运行的命令前提醒使用 tmux
{
"PreToolUse": [
{
"matcher": "tool == \"Bash\" && tool_input.command matches \"(npm|pnpm|yarn|cargo|pytest)\"",
"hooks": [
{
"type": "command",
"command": "if [ -z \"$TMUX\" ]; then echo '[Hook] Consider tmux for session persistence' >&2; fi"
}
]
}
]
}在 Claude Code 中运行 PostToolUse hook 时你会收到的反馈示例
专业提示: 使用 hookify plugin 以对话方式创建 hooks,而不是手写 JSON。运行 /hookify 并描述你想要什么。
Subagents
Subagents 是你的 orchestrator(主 Claude)可以委派任务给它们的进程,它们的作用域有限。它们可以在后台或前台运行,从而为主 agent 释放上下文。
Subagents 和 skills 配合得很好,一个能够执行你部分 skills 的 subagent 可以被委派任务,并自主使用这些 skills。它们也可以通过特定工具权限进行沙箱化。
# 示例 subagent 结构
~/.claude/agents/
planner.md # 功能实现规划
architect.md # 系统设计决策
tdd-guide.md # 测试驱动开发
code-reviewer.md # 质量/安全审查
security-reviewer.md # 漏洞分析
build-error-resolver.md
e2e-runner.md
refactor-cleaner.md为每个 subagent 配置允许的 tools、MCPs 和权限,以实现正确的作用域控制。
Rules 和 Memory
你的 .rules 文件夹保存着 Claude 应当始终遵循的 .md 文件最佳实践。有两种方式:
- 单个 CLAUDE.md - 所有内容放在一个文件中(用户级或项目级)
- Rules 文件夹 - 按关注点分组的模块化
.md文件
~/.claude/rules/
security.md # 不要硬编码密钥,校验输入
coding-style.md # 不可变性、文件组织
testing.md # TDD 工作流,80% 覆盖率
git-workflow.md # 提交格式,PR 流程
agents.md # 何时委派给 subagents
performance.md # 模型选择,上下文管理示例规则:
- 代码库中不要使用 emoji
- 前端避免使用紫色色调
- 部署前始终测试代码
- 优先模块化代码,而不是 mega-files
- 永远不要提交 console.logs
MCPs(Model Context Protocol)
MCPs 让 Claude 直接连接到外部服务。它不是 API 的替代品,而是围绕 API 的 prompt 驱动封装,使信息导航更灵活。
示例:Supabase MCP 让 Claude 拉取特定数据,直接在上游运行 SQL,而不需要复制粘贴。数据库、部署平台等也是同理。
supabase mcp 列出 public schema 中表的示例
Claude 中的 Chrome: 这是一个内置的 plugin MCP,让 Claude 可以自主控制你的浏览器,点击浏览以查看事物如何运作。
关键:上下文窗口管理
对 MCPs 要挑剔一些。我会把所有 MCPs 保留在用户配置中,但禁用所有未使用的。进入 /plugins 并向下滚动,或者运行 /mcp。
在压缩之前,你的 200k 上下文窗口,如果启用了太多工具,可能只剩 70k。性能会显著下降。
使用 /plugins 进入 MCPs,查看当前安装了哪些以及它们的状态
经验法则: 配置中可以有 20-30 个 MCPs,但保持启用数低于 10 / 活跃工具低于 80。
Plugins
Plugins 将工具打包,便于安装,而不是进行繁琐的手动配置。一个 plugin 可以是 skill + MCP 的组合,或者打包在一起的 hooks/tools。
安装 plugins:
# 添加一个 marketplace
claude plugin marketplace add https://github.com/mixedbread-ai/mgrep
# 打开 Claude,运行 /plugins,找到新的 marketplace,然后从那里安装显示新安装的 Mixedbread-Grep marketplace
LSP Plugins: 如果你经常在编辑器之外运行 Claude Code,它们尤其有用。Language Server Protocol 为 Claude 提供实时类型检查、go-to-definition 和智能补全,而不需要打开 IDE。
# 已启用 plugins 示例
typescript-lsp@claude-plugins-official # TypeScript 智能支持
pyright-lsp@claude-plugins-official # Python 类型检查
hookify@claude-plugins-official # 以对话方式创建 hooks
mgrep@Mixedbread-Grep # 比 ripgrep 更好的搜索和 MCPs 一样的提醒,注意你的上下文窗口。
Tips 和 Tricks
键盘快捷键
- Ctrl+U - 删除整行(比疯狂按退格更快)
- ! - 快速 bash 命令前缀
- @ - 搜索文件
- / - 发起斜杠命令
- Shift+Enter - 多行输入
- Tab - 切换 thinking 显示
- Esc Esc - 中断 Claude / 恢复代码
并行工作流
/fork - 分叉对话以并行处理不重叠的任务,而不是疯狂发送排队消息
Git Worktrees - 用于无冲突的重叠并行 Claude。每个 worktree 都是一个独立 checkout
git worktree add ../feature-branch feature-branch
# 现在在每个 worktree 中分别运行 Claude 实例用于长时间运行命令的 tmux: 流式查看并监控 Claude 运行的日志/bash 进程。
![]()
让 claude code 启动前端和后端服务器,并通过 tmux 连接到 session 来监控日志
tmux new -s dev
# Claude 在这里运行命令,你可以分离并重新附加
tmux attach -t devmgrep > grep: mgrep 相比 ripgrep/grep 是显著改进。通过 plugin marketplace 安装,然后使用 /mgrep skill。既支持本地搜索,也支持网页搜索。
mgrep "function handleSubmit" # 本地搜索
mgrep --web "Next.js 15 app router changes" # 网页搜索其他有用命令
- /rewind - 返回到先前状态
- /statusline - 使用 branch、context %、todos 自定义
- /checkpoints - 文件级撤销点
- /compact - 手动触发上下文压缩
GitHub Actions CI/CD
在你的 PR 上用 GitHub Actions 设置代码审查。配置完成后,Claude 可以自动审查 PR。
claude 批准一个 bug 修复 PR
沙箱化
对高风险操作使用 sandbox mode,Claude 会在受限环境中运行,而不会影响你的实际系统。(使用 --dangerously-skip-permissions 则相反,让 claude 自由行动,如果不小心会有破坏性。)
关于编辑器
虽然编辑器不是必需的,但它会对你的 Claude Code 工作流产生正面或负面的影响。虽然 Claude Code 可以在任何终端中工作,但把它和一个能力强的编辑器配合使用,可以解锁实时文件跟踪、快速导航和集成命令执行。
Zed(我的偏好)
我使用 Zed ,这是一个基于 Rust 的编辑器,轻量、快速且高度可定制。
为什么 Zed 和 Claude Code 配合得很好:
- Agent Panel 集成 - Zed 的 Claude 集成让你在 Claude 编辑文件时实时追踪文件变化。可以在不离开编辑器的情况下跳转到 Claude 引用的文件
- 性能 - 用 Rust 编写,启动瞬间完成,处理大型代码库也不会卡顿
- CMD+Shift+R Command Palette - 在可搜索 UI 中快速访问你所有自定义斜杠命令、调试器和工具。即使你只是想运行一个快速命令,也不用切换到终端
- 极低资源占用 - 在重度操作期间不会与 Claude 争夺系统资源
- Vim 模式 - 如果你喜欢的话,支持完整 vim 键位绑定
使用 CMD+Shift+R 的自定义命令下拉菜单的 Zed Editor。
Following mode 显示为右下角的靶心图标。
- 分屏 - 一边是运行 Claude Code 的终端,另一边是编辑器
- Ctrl + G - 在 Zed 中快速打开 Claude 当前正在处理的文件
- 自动保存 - 启用 autosave,这样 Claude 读取到的文件总是最新的
- Git 集成 - 在提交前使用编辑器的 git 功能审查 Claude 的更改
- 文件监视器 - 大多数编辑器会自动重新加载变更文件,确认这项功能已启用
VSCode / Cursor
这也是一个可行的选择,并且与 Claude Code 配合良好。你可以在终端模式中使用它,通过 \ide 与编辑器自动同步,从而启用 LSP 功能(现在有了 plugins 之后,这一点多少显得有些重复)。或者你也可以选择扩展,它与 Editor 集成得更深,并且有匹配的 UI。
直接来自文档 https://code.claude.com/docs/en/vs-code
我的配置
Plugins
已安装:(我通常一次只启用其中 4-5 个)
ralph-wiggum@claude-code-plugins # 循环自动化
frontend-design@claude-code-plugins # UI/UX 模式
commit-commands@claude-code-plugins # Git 工作流
security-guidance@claude-code-plugins # 安全检查
pr-review-toolkit@claude-code-plugins # PR 自动化
typescript-lsp@claude-plugins-official # TS 智能支持
hookify@claude-plugins-official # Hook 创建
code-simplifier@claude-plugins-official
feature-dev@claude-code-plugins
explanatory-output-style@claude-code-plugins
code-review@claude-code-plugins
context7@claude-plugins-official # 实时文档
pyright-lsp@claude-plugins-official # Python 类型
mgrep@Mixedbread-Grep # 更好的搜索MCP 服务器
配置(用户级):
{
"github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"] },
"firecrawl": { "command": "npx", "args": ["-y", "firecrawl-mcp"] },
"supabase": {
"command": "npx",
"args": ["-y", "@supabase/mcp-server-supabase@latest", "--project-ref=YOUR_REF"]
},
"memory": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-memory"] },
"sequential-thinking": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sequential-thinking"]
},
"vercel": { "type": "http", "url": "https://mcp.vercel.com" },
"railway": { "command": "npx", "args": ["-y", "@railway/mcp-server"] },
"cloudflare-docs": { "type": "http", "url": "https://docs.mcp.cloudflare.com/mcp" },
"cloudflare-workers-bindings": {
"type": "http",
"url": "https://bindings.mcp.cloudflare.com/mcp"
},
"cloudflare-workers-builds": { "type": "http", "url": "https://builds.mcp.cloudflare.com/mcp" },
"cloudflare-observability": {
"type": "http",
"url": "https://observability.mcp.cloudflare.com/mcp"
},
"clickhouse": { "type": "http", "url": "https://mcp.clickhouse.cloud/mcp" },
"AbletonMCP": { "command": "uvx", "args": ["ableton-mcp"] },
"magic": { "command": "npx", "args": ["-y", "@magicuidesign/mcp@latest"] }
}按项目禁用(上下文窗口管理):
# 在 ~/.claude.json 的 projects.[path].disabledMcpServers 下
disabledMcpServers: [
"playwright",
"cloudflare-workers-builds",
"cloudflare-workers-bindings",
"cloudflare-observability",
"cloudflare-docs",
"clickhouse",
"AbletonMCP",
"context7",
"magic"
]这才是关键,我配置了 14 个 MCP,但每个项目只启用大约 5-6 个。这样能保持上下文窗口健康。
关键 Hooks
{
"PreToolUse": [
// 为长时间运行命令提醒 tmux
{ "matcher": "npm|pnpm|yarn|cargo|pytest", "hooks": ["tmux reminder"] },
// 阻止不必要的 .md 文件创建
{ "matcher": "Write && .md file", "hooks": ["block unless README/CLAUDE"] },
// git push 之前先审查
{ "matcher": "git push", "hooks": ["open editor for review"] }
],
"PostToolUse": [
// 用 Prettier 自动格式化 JS/TS
{ "matcher": "Edit && .ts/.tsx/.js/.jsx", "hooks": ["prettier --write"] },
// 编辑后做 TypeScript 检查
{ "matcher": "Edit && .ts/.tsx", "hooks": ["tsc --noEmit"] },
// 对 console.log 发出警告
{ "matcher": "Edit", "hooks": ["grep console.log warning"] }
],
"Stop": [
// session 结束前审计 console.logs
{ "matcher": "*", "hooks": ["check modified files for console.log"] }
]
}自定义状态栏
显示用户、目录、带 dirty 指示器的 git branch、剩余上下文百分比、模型、时间和 todo 数量:
我在 Mac 根目录中的 statusline 示例
Rules 结构
~/.claude/rules/
security.md # 强制安全检查
coding-style.md # 不可变性、文件大小限制
testing.md # TDD,80% 覆盖率
git-workflow.md # Conventional commits
agents.md # Subagent 委派规则
patterns.md # API 响应格式
performance.md # 模型选择(Haiku vs Sonnet vs Opus)
hooks.md # Hook 文档Subagents
~/.claude/agents/
planner.md # 拆解功能
architect.md # 系统设计
tdd-guide.md # 先写测试
code-reviewer.md # 质量审查
security-reviewer.md # 漏洞扫描
build-error-resolver.md
e2e-runner.md # Playwright 测试
refactor-cleaner.md # 死代码清理
doc-updater.md # 保持文档同步关键结论
- 不要过度复杂化,把配置当成 fine-tuning,而不是架构
- 上下文窗口很宝贵,禁用未使用的 MCPs 和 plugins
- 并行执行,分叉对话,使用 git worktrees
- 把重复工作自动化,用 hooks 做格式化、lint 和提醒
- 给你的 subagents 明确作用域,有限工具 = 更专注的执行
参考资料
- [Subagents]
- [MCP Overview]
注意:这只是部分细节。如果大家感兴趣,我可能会再发更多关于具体细节的帖子。